home *** CD-ROM | disk | FTP | other *** search
- uses bignum,crt;
- var
- n,r,code: integer;
- c,f1,f2,f3,tot,per: string;
- fn,fr: string;
- begin
- c :='';
- clrscr;
-
- textCOLOR (7);gotoxy(32,1);write('ODDS CALCULATOR');textCOLOR (7);
- gotoxy(1,2);write('THIS PROGRAM CAN HELP YOU CALCULATE THE ODDS OF LOTTERIES OR OTHER EVENTS. SAY ');
- gotoxy(1,3);write('THERE IS A LOTTERY WITH #''s RANGING FROM 1 TO 36. YOU ENTER 36 FOR # OF OB- ');
- gotoxy(1,4);write('JECTS. IF YOU MUST PICK 6 #''s OUT OF THE 36, YOU ENTER 6 WHEN THE COMPUTER ASKS');
- gotoxy(1,5);write('FOR # OF ITEMS PICKING FROM OBJECTS. THE COMPUTER WILL TELL YOU HOW MANY TOTAL ');
- gotoxy(1,6);write('POSSIBLE CHOICES YOU HAVE AND THE ODDS AT GETTING THE RIGHT COMBINATION.');
- window(1,7,80,25);
- while (c <>'N') and (c <>'n') do
- begin
- writeln('');
- n :=1;
- code := 1;
-
- {$I-}
- while (n<=1) or (code<>0) do
- begin
- write('# OF OBJECTS YOU MUST PICK FROM ?');
- readln(n);
- if (n>145) or (n<=1) then
- begin
- writeln('Must be from 2 to 145!');
- sound(40);
- delay(100);
- nosound;
- n := -1;
- end;
- code := ioresult;
- end;
- r := 0;
- code :=1;
-
- while ((r >n) or (r<=0)) or (code<>0) do
- begin
- write('# OF ITEMS PICKING FROM OBJECTS ?');
- readln(r);
- if (r>n) or (r<=0) then
- begin
- writeln('Must be from 1 to ',n,'!');
- sound(40);
- delay(100);
- nosound;
- r := -1;
- end;
- code := ioresult;
- end;
- str(n,fn);
- str(r,fr);
- textcolor(21);
- writeln('Please wait---Calculating odds!');textcolor(7);
- if fn <> fr then
- begin
- f1 := fac(fn);
- f2 := fac(fr);
- end
- else
- begin
- f1 := fn;
- f2 := fn;{equal, no factorial needed}
- end;
-
- f3 := fac(minus(fn,fr,true));
- tot := divide(f1,times(f2,f3,false),false,true);
- per := divide('1',tot,false,false);
- if length(per) >=253 then
- per := copy (per,1,252);
- clrscr;
- writeln('');
- writeln('');
- write('TOTAL POSSIBLE COMBINATIONS WITH ',N,' OBJECTS PICKING ',R);
- writeln(' ITEMS=',TOT);
- writeln('ODDS AT PICKING THE CORRECT ITEMS FROM OBJECTS IN ONE GUESS=',times(per,'100',false),'%');
- write('CALCULATE MORE ODDS (Y/N)?');
- readln(c);
- end;
- end.